MySQL 计算日期月差问题(不满一年算一年)

您所在的位置:网站首页 mysql 日期计算 MySQL 计算日期月差问题(不满一年算一年)

MySQL 计算日期月差问题(不满一年算一年)

2023-08-06 03:43| 来源: 网络整理| 查看: 265

MySQL 月差问题

计算A日期和B日期之间相差几年,不满一年算一年:

解决方案:对比两日期的天数,如果数值不一样认为不满一个月,加一操作

数据库:在这里插入图片描述 SQL语句:(当前时间为2021-06-02)

SELECT ( case WHEN ( `b`.`LASTINSPECTTYPE` = '改造' ) THEN ( CASE WHEN ( (timestampdiff( MONTH, date_format( `b`.`remouldinspectdate`, '%Y-%m-%d' ), curdate()) mod 12 ) = 0 ) THEN ( case when (date_format(curdate(),'%e')!=date_format(b.remouldinspectdate,'%e') ) THEN ceiling( (timestampdiff(MONTH,date_format(b.remouldinspectdate,'%Y-%m-%d'),(curdate() + INTERVAL 1 YEAR )) / 12 ) ) ELSE ceiling( (timestampdiff(MONTH,date_format(b.remouldinspectdate,'%Y-%m-%d'),curdate()) / 12 ) ) END ) ELSE ceiling( (timestampdiff(MONTH,date_format(b.remouldinspectdate,'%Y-%m-%d'),curdate()) / 12 ) ) END ) WHEN ( `b`.`LASTINSPECTTYPE` = '安装' ) THEN ( CASE WHEN ( (timestampdiff( MONTH, date_format( `b`.`INSTALLINSPECTDATE`, '%Y-%m-%d' ), curdate()) mod 12 ) = 0 ) THEN ( case when (date_format(curdate(),'%e')!=date_format(b.INSTALLINSPECTDATE,'%e') ) THEN ceiling( (timestampdiff(MONTH,date_format(b.INSTALLINSPECTDATE,'%Y-%m-%d'),(curdate() + INTERVAL 1 YEAR )) / 12 ) ) ELSE ceiling( (timestampdiff(MONTH,date_format(b.INSTALLINSPECTDATE,'%Y-%m-%d'),curdate()) / 12 ) ) END ) ELSE ceiling( (timestampdiff(MONTH,date_format(b.INSTALLINSPECTDATE,'%Y-%m-%d'),curdate()) / 12 ) ) END ) ELSE '' END ) AS `USEYEARS` from helloelv b

结果: 在这里插入图片描述 符合要求 但如果遇到两个日期相同还是有误,需要添加 to_day 判断

SELECT ( CASE WHEN ( `b`.`LASTINSPECTTYPE` = '重大修理' ) THEN ( CASE WHEN ( b.remouldinspectdate IS NOT NULL ) THEN ( CASE WHEN ( timestampdiff( MONTH, date_format(b.remouldinspectdate,'%Y-%m-%d'),curdate())


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3